using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
using HzyEF.Base;
using HzyEF.Core.Interface;

namespace HzyEF.Core.Abstract
{
    public abstract class AbsInsert<T> : Base, IInsert<T> where T : class
    {
        public AbsInsert(SqlStorage sqlStorage) : base(sqlStorage)
        {

        }

        public abstract IInsert<T> Execute(List<SqlStorage> SqlContainer, out object Id);
        public abstract object Execute();
        public abstract Task<object> ExecuteAsync();
        public abstract IInsert<T> IgnoreCols(Expression<Func<T, dynamic>> IgnoreColumns);
        public abstract IInsert<T> IgnoreCols(Expression<Func<T, dynamic>> IgnoreColumns, bool IF);
        public abstract SqlStorage ToSql(out object Id);
    }
}